package com.ruoyi.project.erp.mapper;

import com.ruoyi.project.erp.domain.Worklog;
import com.ruoyi.project.erp.dto.MyWorklogQuery;
import com.ruoyi.project.erp.dto.SalesStatQuery;
import com.ruoyi.project.erp.dto.WorklogStatQuery;
import com.ruoyi.project.erp.vo.*;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

@Mapper
public interface AdminOaMapper {

    /**
     * 按工程师统计工时
     * @param query 查询条件
     * @return 统计结果
     */
    List<Map<String, Object>> selectStatByUser(WorklogStatQuery query);

    /**
     * 按项目统计工时
     * @param query 查询条件
     * @return 统计结果
     */
    List<Map<String, Object>> selectStatByProject(WorklogStatQuery query);

    /**
     * 按任务统计工时
     * @param query 查询条件
     * @return 统计结果
     */
    List<Map<String, Object>> selectStatByTask(WorklogStatQuery query);

    /**
     * 按销售统计工时
     * @param query 查询条件
     * @return 统计结果
     */
    List<Map<String, Object>> selectStatBySales(WorklogStatQuery query);

    /**
     * 查询项目概览数据
     * @param query 查询条件
     * @return 概览数据
     */
    ProjectStatOverviewVo getProjectOverview(WorklogStatQuery query);

    /**
     * 按成员统计工时
     * @param query 查询条件
     * @return 成员工时列表
     */
    List<ProjectStatMemberVo> selectStatsByMemberList(WorklogStatQuery query);

    /**
     * 按任务统计工时
     * @param query 查询条件
     * @return 任务工时列表
     */
    List<ProjectStatTaskVo> selectStatsByTaskList(WorklogStatQuery query);

    /**
     * 查询工时明细列表 (可复用您已有的工时查询)
     * @param query 查询条件
     * @return 工时明细列表
     */
    public List<TaskDetialVO> selectWorklogDetailList(WorklogStatQuery query);


    /**
     * 获取我的工时汇总数据
     */
    MyWorklogSummaryVo getMyWorklogSummary(MyWorklogQuery query);

    /**
     * 查询我参与的任务列表（根据工时记录）
     *
     * @param query 查询条件
     * @return 任务详情VO列表
     */
    // 将返回类型 List<Worklog> 修改为 List<TaskDetialVO>
    public List<TaskDetialVO> selectMyWorklogList(MyWorklogQuery query);

    List<SalesStatSummaryVo> selectSalesSummaryStats(SalesStatQuery query);
}
